home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************
- module: standard lib.c
- ********************************************************************/
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- #pragma options(!require_protos)
-
-
- void * memset(/* void *s, int c, size_t n */)
- {
- asm {
- move.l 4(sp),d0 ; D0.L = result
- movea.l d0,a0 ; A0 = s
- #if __option(int_4)
- move.b 11(sp),d1 ; D1.B = (unsigned char) c
- move.l 12(sp),d2 ; D2.L = n
- #else
- move.b 9(sp),d1 ; D1.B = (unsigned char) c
- move.l 10(sp),d2 ; D2.L = n
- #endif
- bra.s @2
- @1 move.b d1,(a0)+
- subq.l #1,d2
- @2 bne.s @1
- }
- }
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- int memcmp(/* const void *s1, const void *s2, size_t n */)
- {
- asm {
- moveq #0,d0 ; D0.L = result
- movea.l 4(sp),a0 ; A0 = s1
- movea.l 8(sp),a1 ; A1 = s2
- move.l 12(sp),d1 ; D1.L = n
- bra.s @2
- @1 subq.l #1,d1
- @2 beq.s @4
- cmpm.b (a0)+,(a1)+
- beq.s @1
- blo.s @3
- subq.l #2,d0
- @3 addq.l #1,d0
- @4 }
- }
-